Software that accesses a portion of a data object may load an entire data object only to access a portion of the properties within the data object. Such a situation may occur when a binding is made to the data object, but may cause performance problems when the data object is very large and the requested data is relatively small.
Further, some data objects may be populated by various processes. In some situations, the processes that provide data may not be known at design time and may be changed or updated after a software application is installed. In such situations, the application may not be aware of the existence of value providers for portions of the data objects.